package com.sunday.common.mybatis.plus.http;

import com.sunday.common.http.apache.HttpResponseHandler;
import com.sunday.common.http.apache.sync.HttpClientPoolUtils;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;

import java.util.concurrent.TimeUnit;

/**
 * https://openjdk.org/projects/jdk9/
 * <p>
 * 全新的 HTTP 客户端 API
 * <p>
 * HTTP，用于传输网页的协议，早在 1997 年就被采用在目前的 1.1
 * 版本中。直到 2015 年，HTTP2 才成为标准。
 * <p>
 * Java 9 中有新的方式来处理 HTTP 调用。它提供了一个新的 HTTP客户端（ HttpClient ）， 它 将 替代仅适用于 blocking 模式的HttpURLConnection （HttpURLConnection是在HTTP 1.0的时代创建的，并使用了协议无关的方法），并提供对 WebSocket 和 HTTP/2 的支持。
 * <p>
 * 此外，HTTP 客户端还提供 API 来处理 HTTP/2 的特性，比如流和
 * 服务器推送等功能。全新的 HTTP 客户端 API 可以从 jdk.incubator.httpclient 模块中获取。因为在默认情况下，这个模块是不能根据 classpath 获取的，需要使用 add modules 命令选项配置这个模块，将这个模块添加到 classpath中。
 */
@Slf4j
public class HttpClient {

    @Test
    public void httpClientTest() throws InterruptedException {
        for (int i = 0; i < 5; i++) {
            new Thread(() -> {
                String url = "http://127.0.0.1:13000/test/insert";
                HttpResponseHandler.invoke(() -> HttpClientPoolUtils.doGet(url));
            }).start();
        }
        TimeUnit.SECONDS.sleep(300);
    }

}
